using System;
using System.Collections.Generic;
using System.Text;
using Unitins.Component.PersistenceLayer;
using Unitins.Component.ComponentMaster;

namespace Unitins.Component.Repository.Sepsi
{
    [Serializable]
    public class Professor : IObject<Professor>
    {
        #region Fields

        private Int64 idProfessor;
        private Int64 idUsuario;
        private String formacao;
        private String abordagem;
        private String especialidade;
        private String funcao;
        private String tempoServico;

        #endregion Fields

        #region Properties

        public Int64 IdProfessor
        {
            get { return idProfessor; }
            set { idProfessor = value; }
        }

        public Int64 IdUsuario
        {
            get { return idUsuario; }
            set { idUsuario = value; }
        }

        public String Formacao
        {
            get { return formacao; }
            set { formacao = value; }
        }

        public String Abordagem
        {
            get { return abordagem; }
            set { abordagem = value; }
        }

        public String Especialidade
        {
            get { return especialidade; }
            set { especialidade = value; }
        }

        public String Funcao
        {
            get { return funcao; }
            set { funcao = value; }
        }

        public String TempoServico
        {
            get { return tempoServico; }
            set { tempoServico = value; }
        }

        #endregion Properties

        #region Constructor

        public Professor()
        {
        }

        public Professor(Int64 idProfessor, Int64 idUsuario, String formacao, String abordagem, String especialidade, String funcao, String tempoServico)
        {
            this.IdProfessor = idProfessor;
            this.IdUsuario = idUsuario;
            this.Formacao = formacao;
            this.Abordagem = abordagem;
            this.Especialidade = especialidade;
            this.Funcao = funcao;
            this.TempoServico = tempoServico;
        }

        #endregion Constructors

        #region Methods Overrides

        public String GetToString()
        {
            return
            (
                "{IdProfessor : " + this.IdProfessor + "} " + Environment.NewLine +
                "{IdUsuario : " + this.IdUsuario + "} " + Environment.NewLine +
                "{Formacao : " + this.Formacao + "} " + Environment.NewLine +
                "{Abordagem : " + this.Abordagem + "} " + Environment.NewLine +
                "{Especialidade : " + this.Especialidade + "} " + Environment.NewLine +
                "{Funcao : " + this.Funcao + "} " + Environment.NewLine +
                "{TempoServico : " + this.TempoServico + "} " + Environment.NewLine +
                ""
             );
        }

        public object Clone()
        {
            Professor objProfessor = new Professor();

            objProfessor.IdProfessor = this.IdProfessor;
            objProfessor.IdUsuario = this.IdUsuario;
            objProfessor.Formacao = this.Formacao;
            objProfessor.Abordagem = this.Abordagem;
            objProfessor.Especialidade = this.Especialidade;
            objProfessor.Funcao = this.Funcao;
            objProfessor.TempoServico = this.TempoServico;

            return objProfessor;
        }

        #endregion Methods Overrides

    }

    public enum ProfessorAttribute
    {
        IdProfessor = 0,
        IdUsuario = 1,
        Formacao = 2,
        Abordagem = 3,
        Especialidade = 4,
        Funcao = 5,
        TempoServico = 6,
    }
}
